package vista.objetos;

import java.nio.FloatBuffer;

import javax.media.opengl.GL2;

import vista.paneles.hojaDibujo.UtilHojaDeDibujo;

public abstract class EstrategiaRelacionGraficable {
	
	public abstract void dibujarse(GL2 areaDeDibujo, RelacionGraficable relacion);	
	
	protected static void dibujarRelacion(GL2 gl, RelacionGraficable relacion, FloatBuffer colorSup, FloatBuffer colorMedio, FloatBuffer colorInf)
	{
		EstrategiaDeDistribucionDeAtributos.dibujarAtributos(gl, relacion.getAtributos(), relacion.getPunto());
       	dibujarRombo(gl, relacion, colorSup, colorMedio, colorInf);
	}

	private static void dibujarRombo(GL2 gl, RelacionGraficable relacion, FloatBuffer colorSup, FloatBuffer colorMedio, FloatBuffer colorInf) 
	{
		float[] centroRelacionMundo = UtilHojaDeDibujo.getCoordMundo(gl, relacion.getPunto().x, relacion.getPunto().y);
		float[] dim = UtilHojaDeDibujo.getDimensionMundo(gl, relacion.getEtiqueta().getWidth()/2, relacion.getEtiqueta().getHeight()/2);

		gl.glBegin(GL2.GL_TRIANGLE_STRIP);
				
			gl.glColor3fv(colorSup);
			gl.glVertex2f(centroRelacionMundo[0], centroRelacionMundo[1] + dim[1]);
			
			gl.glColor3fv(colorMedio);
			gl.glVertex2f(centroRelacionMundo[0] - dim[0], centroRelacionMundo[1]);
			gl.glVertex2f(centroRelacionMundo[0] + dim[0], centroRelacionMundo[1]);
				
			gl.glColor3fv(colorInf);
			gl.glVertex2f(centroRelacionMundo[0], centroRelacionMundo[1] - dim[1]);
				
		gl.glEnd();
	}
}
